package com.anuo.app.modules.user.dao;

import com.anuo.app.common.entity.LocationFilter;
import com.anuo.app.common.persistence.MyBatisDao;
import com.anuo.app.modules.feed.entity.FeedComment;
import com.anuo.app.modules.study.entity.User;
import com.anuo.app.modules.system.entity.*;
import com.anuo.app.modules.user.entity.UserAccount;
import com.anuo.app.modules.user.entity.UserFilter;
import com.anuo.app.modules.user.entity.UserLimit;

import java.util.List;

@MyBatisDao
public interface UserDao {
    void registerUser(UserAccount userAccount);
    void insertUserLimit(UserLimit userLimit);
    boolean isExistUser(UserAccount userAccount);
    UserAccount getUser(UserFilter userFilter);
    void insertOnlineUser(Onlineuser onlineuser);
    void deleteOnlineUser(Onlineuser onlineuser);
    LocationFilter getCurrentLocationRectangle(LocationFilter location);

    LocationFilter getCurrentLocationRectangleDouble(LocationFilter location);

    boolean isExistUserLimit(UserLimit userLimit);
    void updateUserLimit(UserLimit userLimit);
    UserLimit getUserLimit(UserFilter userFilter);
    boolean isExistToken(String token);
    void logout(UserAccount userAccount);

    void updateUserAccount(UserAccount userAccount);
    void updateMobile(UserAccount userAccount);
    UserAccount getMobileExceptMe(UserFilter userFilter);
    void updateUserPassword(UserAccount userAccount);
    void bindWeiXin(UserAccount userAccount);
    void bindQQ(UserAccount userAccount);
    void unbindWeiXin(UserAccount userAccount);
    int getAllUserListCount(UserFilter userFilter);
    List<UserAccount> getAllUserList(UserFilter userFilter);

    int getCoachListCount(UserFilter userFilter);
    List<UserAccount> getCoachList(UserFilter userFilter);

    int getGeneralUserListCount(UserFilter userFilter);
    List<UserAccount> getGeneralUserList(UserFilter userFilter);

    int getUserNearbyAreaListCount(UserFilter userFilter);
    List<ShopArea> getUserNearbyAreaList(UserFilter userFilter);


}